1-3python if文、比較演算子、リスト構造について
if文とは条件を満たした時のみ特定の処理を行うものである
書き方としては以下のとおりである
code:例
if 条件式:
処理
次のページのforも同様だが、注意する点は、
・ifの最後に「:」を書くことを忘れないようにする
・処理を行う行は字下げ(インデント)をする
また条件式1ではなく条件式2を満たして処理2を行いたい時はelifを使用する。
ちなみにelifはいくつでも追加することができる。
条件式を満たしていない場合に処理3を実行したい時はelseを使用する。
いずれにしても字下げ(インデント)と「:」を忘れずに行う事!
code:例
if 条件式1:
処理1
elif 条件式2:
処理2
else:
処理3
if 条件4:
処理4
また、上記の例のようにif文の中にif文を入れる入れ子構造にすることも可能
if文の条件式でTrueかFalseか判定をする時がある。その場合は比較演算子を使用する。
具体的には以下の表を参照
table:比較演算子
比較演算 意味
x == y x と y が等しい
X != y x と y が等しくない
x > y x は y よりも大きい
x < y x は y よりも小さい
x >= y x は y と等しいか大きい
x <= y x は y と等しいか小さい
x in y x という要素 が y に存在する
x not in y x という要素 が y に存在しない
x is y xとyは同一のオブジェクトである
x is not y xとyは同一のオブジェクトではない
isと==は似ているが同じではない
==はほとんど同じ値かどうかをチェックする。
そのため同じ値を.copyしたリストでもTrueとなる。
isは同一かどうかをチェックしているため同じ値を.copyしたリストでは「値が同じだけの別のリスト」Falseとなる。
この比較演算子を使って複数の条件を組み合わせたり、複数条件のどれかを満たせばOKとしたい場合はブール演算を使用する。
また、特定の要素が含まれているかどうかを判定するinも存在する。
code:python
print(1 in a)
print(6 in a)
table:ブール演算
x or y xとyのどちらかがTrueならTrue
x and y xとy両方がTrueならばTrue
not x xがFalseならばTrue
x and y or zやx and ( y or z )みたいな書き方も可能
また以下のもの以外はTrueとなる。(頭の片隅にでも置いておくといいかもしれない)
・空のリスト[]はFalse
・空の辞書{}はFalse
・空の文字列""はFalse
・0はFalse
・0.0はFalse
・Noneも型としてはFalse
リストとは簡単にいうと「複数の要素を含むコンテナ型オブジェクト(英: コンテナ=容器)の事」(C言語とかで言う配列のようなもの)
任意のデータを順番に格納できるともいえる。
リストは以下のように初期化(作成)できる。
code:python
mylist = []
# または
mylist = list()
また、リストは変数型が異なっていても収納することができる。
code:python
リストに新たな要素を追加してみたい時はappend()を使用する。(この場合新しい要素は末尾に追加される)
逆に指定した値と同じ要素を検索し、その最初の要素を削除したい場合には remove()を使用する。
特定の要素のみを表示させたい場合にはリスト名[その要素がある番号]で表示できる。(ただし番号は1からではなく0から始まっている)
code:python
val.append('f')
val.remove('b')
print(val)
リストで使える便利なメソッドを下記に記しておく
またリストには結果を返さないでリストそのものを変更する処理が多い。
table:便利なメソッド
名称 概要、例
append() リストの末尾に要素を追加する
val.append(10)
clear() リスト中の全ての要素を削除する
val.clear()
copy() リストのコピーを返す
y=[1,2,3]
x=y.copy()
→x=[1,2,3]
count() 引数と一致する要素の数を取得
[1,1,2,1,3].count(1)#1が3つあるので"3"が表示
extend() リストの末尾に引数に指定したリストを追加する。
val = ['a', 'b', 'c', 'd', 'e']
val.extend(['f','g'])
#['a', 'b', 'c', 'd', 'e', 'f', 'g'] 単語がなければindexはエラー表示、findは-1を表示
val = ['a','b','c','d','e']
reverse() リストの並び順を反転する
val = ['a','b','c','d','e']
val.reverse()
print(val) #['e', 'd', 'c', 'b', 'a'] insert(i,x) 第1引数に指定したインデックスに要素を挿入します
val = ['a','b','c']
val.insert(2, 'ab')
sort() 引数で受け取った複数の要素を並べ替えてリストとして書き換える pop() 指定したインデックスの要素を削除し、要素を返す。
引数を指定しない場合、リストの末尾の要素を削除する。
val = ['a', 'b', 'c', 'd', 'e'」
print(val) # ['a', 'c', 'd', 'e']
remove() 指定した要素を削除します。
リスト中に該当する要素が無い場合はエラー
val = [a','b','c','d','e']
val.remove('b')
print(val) #['a', 'c', 'd', 'e'] pop()とremove()の違いに注意!
より参照
一度に複数の要素を追加したい時はappend()ではなくextend()を使用する。
code:python
print(val)
print(val)
上記のappendを使用した形のどこが問題なのかというと二次元配列のような入れ子構造になってしまっている点である。
code:入れ子構造:例
# リスト型
# リスト型の入れ子
# 中身確認
print(country_sports)
#結果 'japan', 'usa', 'china'], ['baseball', 'football', 'tennis' この場合で特定の要素のみ表示したい場合は下記のように記述をする。
イメージとしてはcountry_sportsという箱の中にcountry, sportsのリストがある感じ
code:python
# 'usa'
# 'baseball'
# 'football'
入れ子構造はここより参照
そのミュータブルな型を使用する際に注意すべき点が存在する
code:python
numbers2=numbers1
numbers2.sort()
上記のようにリストなどのミュータブルなデータを複数の変数に代入し、sort()やappend()などのリスト自体を変更する操作をすると、他のすべてに影響が出てしまう。
そのため上記のような操作を行いたい場合は別名変数への代入はしないでコピーメゾットなどを利用するようにすること!